package com.example.parkingsharing.ui.components.login

import java.util.regex.Pattern

/**
 * 正则式：如果在“@”之前和之后有一些文本，则认为电子邮件是有效的
 */
private const val EMAIL_VALIDATION_REGEX = "^(.+)@(.+)\$"

/**
 * EmailState 继承于 TextFieldState
 */
class EmailState :
    // 双冒号操作符 表示把一个方法当做一个参数，传递到另一个方法中进行使用
    TextFieldState(validator = ::isEmailValid, errorFor = ::emailValidationError)

/**
 * 验证邮箱是否有效
 */
private fun isEmailValid(email: String): Boolean {
    return Pattern.matches(EMAIL_VALIDATION_REGEX, email)
}

/**
 * 返回要显示的错误，如果没有发现错误则返回null
 */
private fun emailValidationError(email: String): String {
    return "无效电子邮件: $email"
}
